home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FishMarket 1.0
/
FishMarket v1.0.iso
/
fishies
/
376-400
/
disk_396
/
turbotopaz
/
topaztest.asm
< prev
next >
Wrap
Assembly Source File
|
1992-05-06
|
5KB
|
251 lines
; TopazTest
; by Preben Nielsen
; Assemble it as case-sensitive.
; OPT O+
; OPT O1+ ;Tells when a branch could be optimised to short
; OPT i+ ;Tells when '#' is probably missing
TIMES =2500
incdir "INCLUDE:"
include "exec/execbase.i"
include "exec/exec_lib.i"
include "graphics/graphics_lib.i"
include "intuition/intuition.i"
include "intuition/intuition_lib.i"
include "libraries/dos_lib.i"
include "libraries/dosextens.i"
LoadBase MACRO
IFNC '\1','ExecBase'
movea.l \1(PC),A6
ENDC
IFC '\1','ExecBase'
movea.l 4.W,A6
ENDC
ENDM
CallLib MACRO
jsr _LVO\1(A6)
ENDM
Call MACRO
bsr \1
ENDM
Push MACRO
movem.l \1,-(SP)
ENDM
Pop MACRO
movem.l (SP)+,\1
ENDM
LoadBase ExecBase
suba.l A1,A1
CallLib FindTask ;Find us
movea.l D0,A2
tst.l pr_CLI(A2)
bne.S CLIAndWBStartup
WBenchStartup lea pr_MsgPort(A2),A0
CallLib WaitPort ;Wait for a message
lea pr_MsgPort(A2),A0
CallLib GetMsg ;Get the message
move.l D0,WBenchMsg ;Save it for later reply
CLIAndWBStartup lea DosName(PC),A1
CallLib OldOpenLibrary
move.l D0,DosBase
lea GfxName(PC),A1
CallLib OldOpenLibrary
move.l D0,GfxBase
lea IntName(PC),A1
CallLib OldOpenLibrary
move.l D0,IntBase
LoadBase IntBase
lea NW(PC),A0
CallLib OpenWindow
move.l D0,PWindow
movea.l D0,A0
move.l wd_RPort(A0),Rp
LoadBase GfxBase
lea TopazAttr(PC),A0
CallLib OpenFont
tst.l D0
beq.S Exit
movea.l D0,A0
movea.l Rp,A1
CallLib SetFont ;Make sure to use topaz in the right size
bra.S Main
Exit LoadBase IntBase
FreeWindow move.l PWindow(PC),D0
beq.S FreeInt
movea.l D0,A0
CallLib CloseWindow ;Close window if it is open
FreeInt LoadBase ExecBase
move.l IntBase(PC),D0
beq.S FreeGfx
movea.l D0,A1
CallLib CloseLibrary ;Close intuition if it is open
FreeGfx move.l GfxBase(PC),D0
beq.S FreeDos
movea.l D0,A1
CallLib CloseLibrary ;Close graphics if it is open
FreeDos move.l DosBase(PC),D0
beq.S ReplyWB
movea.l D0,A1
CallLib CloseLibrary ;Close dos if it is open
ReplyWB move.l WBenchMsg(PC),D0
beq.S AllDone
CallLib Forbid
movea.l D0,A1
CallLib ReplyMsg ;Reply WBenchMessage if we are started from WB
AllDone rts
Main LoadBase ExecBase
CallLib Forbid
CallLib Disable
LoadBase GfxBase
moveq #1,D0
move.l Rp(PC),A1
CallLib SetAPen
move.w #250,D0
moveq #30,D1
moveq #11,D2
lea WaitTxt(PC),A0
Call Txt
Call StartTimer
move.l #TIMES,D5
moveq #1,D6 ;Color
bra.S ContLoop
Loop not.b D6
move.w D6,D0
move.l Rp(PC),A1
CallLib SetAPen
moveq #8,D0
moveq #19,D1
move.l Rp(PC),A1
CallLib Move
moveq #71,D0
lea TestTxt(PC),A0
movea.l Rp(PC),A1
CallLib Text
ContLoop dbf D5,Loop
Call EndTimer
lea TimeTxt+13(PC),A0
Call DecStr
move.l #TIMES,D0
lea TimeTxt+52(PC),A0
Call DecStr
moveq #1,D0
move.l Rp(PC),A1
CallLib SetAPen
moveq #62,D0
moveq #30,D1
moveq #58,D2
lea TimeTxt(PC),A0
Call Txt
LoadBase ExecBase
CallLib Enable
CallLib Permit
GetNextMsg LoadBase ExecBase
movea.l PWindow(PC),A0
movea.l wd_UserPort(A0),A0
CallLib WaitPort
movea.l PWindow(PC),A0
movea.l wd_UserPort(A0),A0
CallLib GetMsg
tst.l D0
beq.S GetNextMsg
movea.l D0,A1 ;Message address to A1
move.l im_Class(A1),D2 ;Save the event class in D2
CallLib ReplyMsg ;Reply the message
CheckWinClose cmpi.w #CLOSEWINDOW,D2
beq Exit ;Terminate ?
bra.S GetNextMsg
StartTimer Push D1-D7/A0-A6
lea Stamp(PC),A0
Call GetTime
Pop D1-D7/A0-A6
rts
EndTimer Push D1-D7/A0-A6
lea Stamp2(PC),A0
Call GetTime
LoadBase ExecBase
moveq #0,D1
move.b PowerSupplyFrequency(A6),D1
move.l Minutes2(PC),D0
sub.l Minutes(PC),D0
mulu #60,D1
mulu D1,D0
add.l Ticks2(PC),D0
sub.l Ticks(PC),D0
Pop D1-D7/A0-A6
rts
GetTime LoadBase DosBase
move.l A0,D1
CallLib DateStamp ;Get current time
rts
DecStr move.b #'0',-1(A0) ;This has to be done If D0=0
ConvertLoop tst.l D0 ;A0=end of Txtbuffer
beq.S EndDecStr
divu #10,D0
swap D0
addi.b #'0',D0
move.b D0,-(A0)
clr.w D0
swap D0
bra.S ConvertLoop
EndDecStr rts
Txt LoadBase GfxBase
movea.l Rp(PC),A1
CallLib Move
move.w D2,D0
movea.l Rp(PC),A1
CallLib Text
rts
WaitTxt dc.b 'Please Wait'
TestTxt dc.b 'This is a test to see how fast the Text-routine can write with Topaz-80'
TimeTxt dc.b 'It took system ticks to write the string times'
EVEN
TopazAttr dc.l TopazName
dc.w 8
dc.b 0,0
WBenchMsg dc.l 0
DosBase dc.l 0
GfxBase dc.l 0
IntBase dc.l 0
PWindow dc.l 0
Rp dc.l 0
Stamp ;\
Days dc.l 0 ; \struct DateStamp Stamp;
Minutes dc.l 0 ; /
Ticks dc.l 0 ;/
Stamp2 ;\
Days2 dc.l 0 ; \struct DateStamp Stamp;
Minutes2 dc.l 0 ; /
Ticks2 dc.l 0 ;/
NW dc.w 25,40,588,35
dc.b 0,1
dc.l CLOSEWINDOW
dc.l WINDOWDEPTH+WINDOWDRAG+WINDOWCLOSE+ACTIVATE,0,0,NWName,0,0
dc.w 150,50,320,200,WBENCHSCREEN
TopazName dc.b 'topaz.font',0
DosName dc.b 'dos.library',0
GfxName dc.b 'graphics.library',0
IntName dc.b 'intuition.library',0
NWName dc.b ' Measuring Topaz-80 Speed ',0
END